basic functionality is complete