Added types, interface and abstract class for types, and added packages throughout the project