Started code separation.
still not broken