Split the initial prototype implementation over multiple files