initial checkin
refactoring, handling of defaults