more refactoring

rely on naming conventions for constructors, use NSParamenterAssert