Initial commit

Initial commit.
Needs some improvements.