slightly more complicated 'simulation', note: remember to check return value of all drone opperations in real code, or at least change them to throw error instead of failing silently