working on full functionality