change approach, introduce more layer separating core from presentation, still WIP