decoupled piece movement from events / keyboard repeat