must be a better way to implement knight moves