Feature/add callbacks

#9 needs to be merged before this one. I’ll rebase when it’s done