bunch of changes
finish first version