fleshed out tag system a bit