constructor variables should be optional