Made the move interface public and refactored move code into separate
methods.
Added successor function interface.
Adding furhter interfaces.