first working version, only basic features