initial commit with basic features working