Api breaking features

Needs comments added still. Potentially rename/move functions. Still to decide what error's should be thrown back. Was thinking about throwing errors for all user input errors (i.e. incorrect/bad user-id for facebook), but currently all errors like this are caught internally.