first version full functionality