standalone monads, removed inheritance