split code into seperate files
lazyload

funtions can be implemented in Service* classes