move filter logic from route to router
check for request typehint - closes #17