Layout interface and basic abstract class
Merge with Utku's changes