moved constraint execution from struct to object