Updated design / added Implementation