separate class and objects, used require file for better organization