start breaking a few things out into their own directive