Finalized everything except controller and view layers