First version. TODO: profile, work