finally back to moving, less functionality, but much cleaner and more extendible code