Initial commit. Functional, but does not cater to the generic case