Implementation and testing