better class methods and logic