refractored into two projects