Add initial draft of implementation