working on abstracting