move implementation to source file and add builders