package restructuring, fixed programming agains implementations instead of interfaces