Updated api so required values were in constructors, added helpers for enum