first version semi functionable