broke down classes into several files for better comprehension
broke down classes into several files for better comprehension