working project. basic functionality