final version before fixing bugs