Initial commit, testable functioning version