moved 'implements callable' to abstract class