Fleshed out interfaces

First pass at error handling
Added Generic Interfaces
Stubbed out Hal Builder