I didn't like any of the movement code.
Break your problems into smaller ones.
Yay! Basic movment works - no collision though. Things make sense now.