Added pre-condition enforcement