add, fix and implement many things