refactor movement methods and simplify module structure
add pieces_spec