Toying with some implementations

This one just seems unclean, probably going to redo the bmap
Updated data strctures to be a bit cleaner and easier to manage