Initial Commit, may contain alot of bugs