Added movement functionality to functional layer, with unit tests