Step 2

@svnlto I've added the missing methods, did some cleanup, and squashed the commits