Move to three distinct types of handler