Definitions should be in the same order as argument list