removed abstractmethod; things should be faster