proof of concept and basic tests passing