filled in Business layer and unit tests