Initial implementations (not fully working, discussion only)