added Core and ViewModel Layer