first version that finished all requirements