basic functionality is in place