+ Small rewrite

All of this will need to be rewritten completely