finished for final version