converted some constructor internals to staticmethods