moved constructers to their own source file