working on #22, almost done