PlainTile and ShapedTile refactored somewhat