Refactored to get rid of constructors