fully functioning at basic level, including update and destroy methods