adding first version (interfaces only)