Adding interface and logic