implement expected behavior