added perspective projection and movement controller