No longer require closure argument and return value to be optional