Adding functionality to move visual blocks
Loads of changes and restructuring