generalizes controller