Okay, looks like I have some reading on monads to do :|