change interface and implementation
beggin work on new engine