added more methods and functionality