Added Abstract classes for better organization