fixed misprint bug, added supporting move semantics
code cleanup