Initial Commit

Does not fully work yet, read the comments.