more methods and classes implemented