added generic controller