needs a lot of work
solved twice, once with missing method