refactored to use factory methods to obtain pieces in the place commands