Added spec and implementation