first pass at controllers