radically rewritten angular services so they are better maintainable a extensible