Initial commit
Added abstraction layer