Switched to using abstract class methods instead of listeners