Intial commit. Basic structure and design.