Do some refactoring and add basic moves and item implementation