everything works
abstraction issues