cleanup and implement static Create method