class design, second iteration...