basic functionality is now done