yet another angular data abstraction layer