prototype implementation with some todo