added implementation classes
added interfaces, return interfaces instead of pojos