Full functional, but not optiimized.