full functionality with firebase