Add basic features, finish first version