Mostly functional, missing some specific requirements