basic functionality and updating implemented