removed estension methods, added factories