separate controllers out by function