Initial commit, this code is broken as of now