got changes from impl branch, removed implementations