adding more constructors and outlining main functionality