updating to use controllers concept over the lame features concept