some documentation and few more methods to override