raise ArgumentError if illegal place specified
add tests