Split into source and header

Signed-off-by: Eddie Ringle <eddie@eringle.net>