mostly fully functional now