added multiple dispatch functional