restructured to facilitate addition of angular components