finally p-conroller