Separated classes to different .h and .m files for easy readability.