updated, more constructors, closer to 7