added essential functionality