A half functional version to build upon.