subtle design changes
update implementation according to the interface changes