Physics works, but needs refactoring