commands should be delete after use

however it depends whether delete them where created (mean in the class or someplace else hold their pointers) or deletethem in the queue.
the former make more sense but increases complexity.
the latter seems ok but will lead to segfault if duplicated commands was appened to queue.
needs a better way handling them.