added constraints and such