Lots of refactoring. Base off BlockBaseMarker and TileBaseMarker.