introduced pre-conditions