module split into directive and service