first version with all features working