added enforce() where needed